package com.example.zz.example.databinding;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import android.os.Bundle;
import android.view.View;

import com.example.zz.example.R;

/**
 * 使用databinding步骤
 * 1、xml以 <layout 开头，不是以前的相对布局、线性布局等
 * 2、添加<data> </data>标签
 * 3、<data>标签下面只能有一个布局，布局必须全部包裹在这布局之中
 *
 * 普通布局光标放在xml左上角  alt+enter -> convert to data binding layout 进行自动转化 ！！！！
 * 转化后会自动生成绑定好的类，类名是xml名称首字母大写成的，如activity_databinding_test  生成 ActivityDatabindingTestBinding  ！！！！
 *
 *
 * 4、include标签通过include标签id再引用里面的元素，include你面也要layout布局
 *
 * 5、如果要将布局和一个实体类绑定，实体类数据改变后自动刷新
 *      1、xml中添加import 和 variable，xml中@{}方式应用实体类属性
 *      2、实体类继承BaseObservable，要自动刷新的set方法添加notifyPropertyChanged(BR.name);方法，不加的就不会自动刷新
 */
public class DatabindTestActivity extends AppCompatActivity {

    private ActivityDatabindingTestBinding binding;
    private PeopleBean peopleBean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_databinding_test);
        peopleBean = new PeopleBean("张三", 20);
        binding.setPeopleBean(peopleBean);
    }

    public void startUp(View view) {
        binding.tvName.setText("fffffffffffffff");
        //include中元素使用
        binding.includeHeaderId.includeTitle.setText("标题2");
        //数据绑定，数据变化自动更新界面
        peopleBean.setName("李四");
    }

    public void startUp2(View view) {
        //不自动更新数据的接口
        peopleBean.setName2("王五");
    }
}